<!DOCTYPE html>
<html lang="zh-CN">





<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/favicon.png">
  <link rel="icon" type="image/png" href="/img/favicon.png">
  <meta name="viewport"
        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="description" content="机器学习，深度学习，强化学习，算法，Linux">
  <meta name="author" content="seven">
  <meta name="keywords" content="">
  <title>机器学习-支持向量机软间隔和正则化 - SimpleAI</title>

  <link  rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/css/bootstrap.min.css" />
<link  rel="stylesheet" href="https://cdn.staticfile.org/github-markdown-css/4.0.0/github-markdown.min.css" />


  <link  rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/10.0.0/styles/github-gist.min.css" />


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_fmb4a04yx8h.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_pjno9b9zyxs.css">




<link  rel="stylesheet" href="/css/main.css" />

<!-- 自定义样式保持在最底部 -->


<meta name="generator" content="Hexo 4.2.1"></head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand"
       href="/">&nbsp;<strong>Simple AI</strong>&nbsp;</a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/">
              <i class="iconfont icon-home-fill"></i>
              首页</a>
          </li>
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/archives/">
              <i class="iconfont icon-archive-fill"></i>
              归档</a>
          </li>
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/categories/">
              <i class="iconfont icon-category-fill"></i>
              分类</a>
          </li>
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/tags/">
              <i class="iconfont icon-tags-fill"></i>
              标签</a>
          </li>
        
          
          
          
          <li class="nav-item">
            <a class="nav-link" href="/about/">
              <i class="iconfont icon-user-fill"></i>
              关于</a>
          </li>
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" data-toggle="modal" data-target="#modalSearch">&nbsp;&nbsp;<i
                class="iconfont icon-search"></i>&nbsp;&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="view intro-2" id="background" parallax=true
         style="background: url('/img/default.png') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="container text-center white-text fadeInUp">
            <span class="h2" id="subtitle">
              
            </span>

            
              
                <div class="mt-3 post-meta">
                  <i class="iconfont icon-date-fill" aria-hidden="true"></i>
                  <time datetime="2018-07-27 10:00">
                    2018年7月27日 上午
                  </time>
                </div>
              

              <div class="mt-1">
                
                  
                  <span class="post-meta mr-2">
                    <i class="iconfont icon-chart"></i>
                    1.7k 字
                  </span>
                

                
                  
                  <span class="post-meta mr-2">
                      <i class="iconfont icon-clock-fill"></i>
                    
                    
                    19
                     分钟
                  </span>
                

                
                  <!-- 不蒜子统计文章PV -->
                  
                  <span id="busuanzi_container_page_pv" class="post-meta" style="display: none">
                    <i class="iconfont icon-eye" aria-hidden="true"></i>
                    <span id="busuanzi_value_page_pv"></span> 次
                  </span>
                
              </div>
            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid">
  <div class="row">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-md">
      <div class="container nopadding-md" id="board-ctn">
        <div class="py-5" id="board">
          <div class="post-content mx-auto" id="post">
            
              <p class="note note-info">
                
                  本文最后更新于：2 小时前
                
              </p>
            
            <article class="markdown-body">
              <h3 id="软间隔和正则化"><a href="#软间隔和正则化" class="headerlink" title="软间隔和正则化"></a>软间隔和正则化</h3><p>我们在最开始讨论支持向量机的时候，我们就假定数据在样本空间是线性可分的，也就是我们可以找到一个可行的超平面将数据完全分开。后来为了处理非线性数据，我们又推出使用 Kernel 方法对原来的线性 SVM 进行了推广，使得非线性的的情况也能处理。虽然通过映射$\Phi(x)$将原始数据映射到高维空间之后，使得数据集在特征空间中线性可分，但是也很难断定这个貌似线性可分的结果是不是由于<strong>过拟合</strong>造成的。</p>
<h3 id="软间隔的概念"><a href="#软间隔的概念" class="headerlink" title="软间隔的概念"></a>软间隔的概念</h3><p>为了缓解该问题，我们允许支持向量机在一些样本上出错。如图所示：</p>
<p><img src="https://eveseven.oss-cn-shanghai.aliyuncs.com/20200530230212.png" srcset="/img/loading.gif" alt="image"></p>
<p>前面我们所介绍的支持向量机的形式是每个样本必须分正确，这是<strong>“硬间隔”</strong>，而<strong>软间隔</strong>就是允许一些样本不满足约束.</p>
<h3 id="软间隔分类器"><a href="#软间隔分类器" class="headerlink" title="软间隔分类器"></a>软间隔分类器</h3><h5 id="软间隔分类器-soft-margin-classifier-可以解决两种情况"><a href="#软间隔分类器-soft-margin-classifier-可以解决两种情况" class="headerlink" title="软间隔分类器(soft margin classifier)可以解决两种情况."></a>软间隔分类器(soft margin classifier)可以解决两种情况.</h5><p>前面我们都假定数据是线性可分的, 但实际上数据即使映射到了高维也不一定是线性可分. 这个时候就要对超平面进行一个调整, 即这里所说的软间隔. </p>
<p>另一种情况是即使数据是线性可分的, 但数据中可能存在噪点. 而如果按照前面那种常规处理的话, 这些噪点会对我们的结果造成很大的影响.这个时候也是需要使用软间隔来尽可能减少噪点对我们的影响. </p>
<p>如下图所示, 如果数据是线性可分并且不存在噪点的话, 我们可以找到一个完美的分类超平面: </p>
<p><img src="https://eveseven.oss-cn-shanghai.aliyuncs.com/20200530230213.png" srcset="/img/loading.gif" alt="image"></p>
<p>但是, 如果数据中出现了一个噪点并且仍然是线性可分, 如果我们还是按照之前的办法处理, 那么我们就会得到如下的分类超平面, 这明显是不合理的，这也就出现了过拟合的状况. </p>
<p><img src="https://eveseven.oss-cn-shanghai.aliyuncs.com/20200530230214.png" srcset="/img/loading.gif" alt="image"></p>
<h3 id="软间隔支持向量机："><a href="#软间隔支持向量机：" class="headerlink" title="软间隔支持向量机："></a>软间隔支持向量机：</h3><p>在硬间隔最大化的目标函数中添加<strong>松弛变量</strong>和<strong>惩罚参数</strong>，在约束条件中添加<strong>松弛变量</strong>，即 </p>
<h4 id="min-w-b-frac-1-2-w-2-C-sum-i-1-n-xi-i"><a href="#min-w-b-frac-1-2-w-2-C-sum-i-1-n-xi-i" class="headerlink" title="$min_{w,b}\frac{1}{2}{||w||}^2+C\sum_{i=1}^n \xi_i$"></a>$min_{w,b}\frac{1}{2}{||w||}^2+C\sum_{i=1}^n \xi_i$</h4><h4 id="s-t-y-i-w-Tx-b-ge1-xi-i-xi-i-ge0-i-1-2-cdot-cdot-cdot-m"><a href="#s-t-y-i-w-Tx-b-ge1-xi-i-xi-i-ge0-i-1-2-cdot-cdot-cdot-m" class="headerlink" title="$s.t.y_i(w^Tx+b)\ge1-\xi_i,\xi_i\ge0, i=1,2,\cdot \cdot \cdot m$"></a>$s.t.y_i(w^Tx+b)\ge1-\xi_i,\xi_i\ge0, i=1,2,\cdot \cdot \cdot m$</h4><h3 id="注意："><a href="#注意：" class="headerlink" title="注意："></a>注意：</h3><ul>
<li><h4 id="要使间隔尽量大，那-frac-1-2-w-2-尽量小"><a href="#要使间隔尽量大，那-frac-1-2-w-2-尽量小" class="headerlink" title="要使间隔尽量大，那$\frac{1}{2}{||w||}^2$尽量小"></a>要使间隔尽量大，那$\frac{1}{2}{||w||}^2$尽量小</h4></li>
<li><h4 id="误分类点的个数尽量小，即松弛变量-xi-i-尽量小，-C-为调和两者的系数"><a href="#误分类点的个数尽量小，即松弛变量-xi-i-尽量小，-C-为调和两者的系数" class="headerlink" title="误分类点的个数尽量小，即松弛变量$\xi_i$尽量小，$C$为调和两者的系数"></a>误分类点的个数尽量小，即松弛变量$\xi_i$尽量小，$C$为调和两者的系数</h4></li>
</ul>
<h3 id="构建拉格朗日函数"><a href="#构建拉格朗日函数" class="headerlink" title="构建拉格朗日函数"></a>构建拉格朗日函数</h3><p>在<strong>软间隔支持向量机</strong>中每个样本都有一个对应的松弛变量，用来表示该样本不满足约束条件:$y_i(w^Tx+b)\ge1$</p>
<p>但是这个函数同样是一个二次规划问题，我们就可以通过拉格朗日乘子法就可以得到拉格朗日函数。</p>
<h4 id="L-w-b-a-xi-u-frac-1-2-w-2-C-sum-i-1-n-xi-i-sum-i-1-na-i-1-xi-i-y-i-w-Tx-b-sum-i-1-nu-i-xi-i"><a href="#L-w-b-a-xi-u-frac-1-2-w-2-C-sum-i-1-n-xi-i-sum-i-1-na-i-1-xi-i-y-i-w-Tx-b-sum-i-1-nu-i-xi-i" class="headerlink" title="$L(w,b,a,\xi,u)=\frac{1}{2}{||w||}^2+C\sum_{i=1}^n \xi_i+\sum_{i=1}^na_i(1-\xi_i- y_i(w^Tx+b))-\sum_{i=1}^nu_i\xi_i$"></a>$L(w,b,a,\xi,u)=\frac{1}{2}{||w||}^2+C\sum_{i=1}^n \xi_i+\sum_{i=1}^na_i(1-\xi_i- y_i(w^Tx+b))-\sum_{i=1}^nu_i\xi_i$</h4><p>其中$a_i\ge0, u_i\ge0$是拉格朗日的乘子。</p>
<p>令$L(w,b,a,\xi,u)$对$w,b,\xi_i$的偏导为零可得：</p>
<p>求导方法就按照<a href="https://sevenold.github.io/2018/07/ml-svm/" target="_blank" rel="noopener">支持向量机的算法推导</a>来进行：</p>
<h4 id="w-sum-i-1-na-ix-iy-i"><a href="#w-sum-i-1-na-ix-iy-i" class="headerlink" title="$w=\sum_{i=1}^na_ix_iy_i$"></a>$w=\sum_{i=1}^na_ix_iy_i$</h4><h4 id="sum-i-1-na-iy-i-0"><a href="#sum-i-1-na-iy-i-0" class="headerlink" title="$\sum_{i=1}^na_iy_i=0$"></a>$\sum_{i=1}^na_iy_i=0$</h4><h4 id="C-a-i-u-i"><a href="#C-a-i-u-i" class="headerlink" title="$C=a_i+u_i$"></a>$C=a_i+u_i$</h4><h3 id="对偶问题"><a href="#对偶问题" class="headerlink" title="对偶问题"></a>对偶问题</h3><p>类似线性可分支持向量机中做法，引入拉格朗日乘子并构建拉格朗日函数，利用拉格朗日对偶性，问题转化为求解对偶问题 </p>
<h4 id="max-a-sum-i-1-na-i-frac12-sum-i-1-j-1-na-ia-j-x-i-Tx-jy-iy-j"><a href="#max-a-sum-i-1-na-i-frac12-sum-i-1-j-1-na-ia-j-x-i-Tx-jy-iy-j" class="headerlink" title="$max_a \sum_{i=1}^na_i-\frac12\sum_{i=1,j=1}^na_ia_j{x_i}^Tx_jy_iy_j$"></a>$max_a \sum_{i=1}^na_i-\frac12\sum_{i=1,j=1}^na_ia_j{x_i}^Tx_jy_iy_j$</h4><h4 id="s-t-0-le-a-i-le-C-i-1-cdot-cdot-cdot-n"><a href="#s-t-0-le-a-i-le-C-i-1-cdot-cdot-cdot-n" class="headerlink" title="$s.t. ,0\le a_i\le C, i=1,\cdot \cdot \cdot n$"></a>$s.t. ,0\le a_i\le C, i=1,\cdot \cdot \cdot n$</h4><h4 id="sum-i-1-na-iy-i-0-1"><a href="#sum-i-1-na-iy-i-0-1" class="headerlink" title="$\sum_{i=1}^na_iy_i=0$"></a>$\sum_{i=1}^na_iy_i=0$</h4><p>与前面所推导的<strong>硬间隔</strong>下的对偶问题，两者的差别就在于对偶变量的约束不同，前者是$0\le a_i$，后者是$0\le a_i\le C$。后续同样可以引入核函数得到对应的支持向量展开式。</p>
<h3 id="软间隔支持向量机KKT条件"><a href="#软间隔支持向量机KKT条件" class="headerlink" title="软间隔支持向量机KKT条件"></a>软间隔支持向量机KKT条件</h3><h4 id="left-lbrace-begin-aligned-a-i-ge0-u-i-ge0-y-i-w-Tx-i-b-1-xi-i-ge-0-a-i-y-i-w-Tx-i-b-1-xi-i-0-xi-i-ge0-u-i-xi-i-0-end-aligned-right"><a href="#left-lbrace-begin-aligned-a-i-ge0-u-i-ge0-y-i-w-Tx-i-b-1-xi-i-ge-0-a-i-y-i-w-Tx-i-b-1-xi-i-0-xi-i-ge0-u-i-xi-i-0-end-aligned-right" class="headerlink" title="$ \left\lbrace\ \begin{aligned} a_i \ge0 , u_i\ge0\\ y_i(w^Tx_i+b) -1+\xi_i\ge 0 \\ a_i(y_i(w^Tx_i+b)-1+\xi_i)=0 \\ \xi_i\ge0, u_i\xi_i=0 \end{aligned} \right. $"></a>$ \left\lbrace\ \begin{aligned} a_i \ge0 , u_i\ge0\\ y_i(w^Tx_i+b) -1+\xi_i\ge 0 \\ a_i(y_i(w^Tx_i+b)-1+\xi_i)=0 \\ \xi_i\ge0, u_i\xi_i=0 \end{aligned} \right. $</h4><h3 id="合页损失函数"><a href="#合页损失函数" class="headerlink" title="合页损失函数"></a>合页损失函数</h3><p>间隔/线性支持向量机的原始问题可以等价于添加了<strong>正则化项的合页损失函数</strong>，即最小化以下目标函数 </p>
<h4 id="min-w-b-sum-i-1-n-1-y-i-w-Tx-b-lambda-w-2"><a href="#min-w-b-sum-i-1-n-1-y-i-w-Tx-b-lambda-w-2" class="headerlink" title="$min_{w,b}\sum_{i=1}^n[1- y_i(w^Tx+b)]_++\lambda||w||^2$"></a>$min_{w,b}\sum_{i=1}^n[1- y_i(w^Tx+b)]_++\lambda||w||^2$</h4><ul>
<li>第一项为合页损失函数 $L(y(w^Tx+b))=[1- y_i(w^Tx+b)]<em>+$，我们再结合前面我在进行数据分割的约束条件，一般对于函数$[z]</em>+$就有：</li>
</ul>
<h4 id="z-z-如果z-gt-0"><a href="#z-z-如果z-gt-0" class="headerlink" title="$[z]_+=z, 如果z&gt;0$"></a>$[z]_+=z, 如果z&gt;0$</h4><h4 id="z-0-如果z-lt-0"><a href="#z-0-如果z-lt-0" class="headerlink" title="$[z]_+=0, 如果z&lt;0$"></a>$[z]_+=0, 如果z&lt;0$</h4><p>​           这样原式就能表明当样本点$x_i,y_i$被正确分类且<strong>函数间隔</strong>$y_i(w^Tx+b)&gt;1$时损失为0，</p>
<p>​                                                                                                                                         否则损失就为$1-y_i(w^Tx+b)$</p>
<ul>
<li>第二项为正则化项，是系数为λ的w的L2范数</li>
</ul>
<h4 id="线性支持向量机的原始最优化问题与上述目标函数的最优化问题是等价的"><a href="#线性支持向量机的原始最优化问题与上述目标函数的最优化问题是等价的" class="headerlink" title="线性支持向量机的原始最优化问题与上述目标函数的最优化问题是等价的"></a><strong>线性支持向量机的原始最优化问题与上述目标函数的最优化问题是等价的</strong></h4><h4 id="我们把一些损失函数做一个对比："><a href="#我们把一些损失函数做一个对比：" class="headerlink" title="我们把一些损失函数做一个对比："></a>我们把一些损失函数做一个对比：</h4><p><img src="https://eveseven.oss-cn-shanghai.aliyuncs.com/20200530230215.png" srcset="/img/loading.gif" alt="image"></p>
<p>如图所示为常用的一些损失函数，可以看到，各个图中损失函数的曲线基本位于0-1损失函数的上方，所以可以作为0-1损失函数的上界；</p>
<ul>
<li><p>由于0-1损失函数不是连续可导的，直接优化由其构成的目标损失函数比较困难，所以对于svm而言，可以认为是在优化由0-1损失函数的上界(合页损失函数)构成的目标函数，又称为<strong>代理损失函数</strong></p>
</li>
<li><p>合页损失函数对学习有更高的要求</p>
</li>
</ul>
<h3 id="常用替代损失函数"><a href="#常用替代损失函数" class="headerlink" title="常用替代损失函数"></a>常用替代损失函数</h3><p>  通常具有较好的数学性质，比如凸的连续函数且是0/1损失函数的上界</p>
<ul>
<li><h4 id="hinge损失-：-l-hinge-z-max-0-1-z"><a href="#hinge损失-：-l-hinge-z-max-0-1-z" class="headerlink" title="hinge损失  ： $l_{hinge}(z)=max(0,1-z)$"></a>hinge损失  ： $l_{hinge}(z)=max(0,1-z)$</h4></li>
<li><h4 id="指数损失：-l-exp-z-exp-z"><a href="#指数损失：-l-exp-z-exp-z" class="headerlink" title="指数损失： $l_{exp}(z)=exp(-z)$"></a>指数损失： $l_{exp}(z)=exp(-z)$</h4></li>
<li><h4 id="对率损失：-l-log-z-log-1-exp-z"><a href="#对率损失：-l-log-z-log-1-exp-z" class="headerlink" title="对率损失： $l_{log}(z)=log(1+exp(-z))$"></a>对率损失： $l_{log}(z)=log(1+exp(-z))$</h4></li>
</ul>
<h3 id="SVM和Logistic-Regression对比"><a href="#SVM和Logistic-Regression对比" class="headerlink" title="SVM和Logistic Regression对比"></a>SVM和Logistic Regression对比</h3><p><strong>相同点</strong>：优化目标相近，通常情形下性能也相当</p>
<p><strong>不同点</strong>：</p>
<ul>
<li>LR的优势在于其输出具有自然的概率意义，给出预测标记的同时也给出了概率，而SVM要想得到概率输出需特殊处理</li>
<li>LR能直接用于多分类任务，而SVM则需要进行推广</li>
<li>SVM的解具有稀疏性（仅依赖于支持向量），LR对应的对率损失则是光滑的单调递减函数，因此LR的解依赖于更多的训练样本，其预测开销更大</li>
</ul>

            </article>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                  <div class="post-meta mr-3">
                    <i class="iconfont icon-category"></i>
                    
                      <a class="hover-with-bg" href="/categories/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/">机器学习</a>
                    
                  </div>
                
                
                  <div class="post-meta">
                    <i class="iconfont icon-tags"></i>
                    
                      <a class="hover-with-bg" href="/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/">机器学习</a>
                    
                      <a class="hover-with-bg" href="/tags/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA/">支持向量机</a>
                    
                      <a class="hover-with-bg" href="/tags/%E8%BD%AF%E9%97%B4%E9%9A%94%E5%92%8C%E6%AD%A3%E5%88%99%E5%8C%96/">软间隔和正则化</a>
                    
                  </div>
                
              </div>
              
                <p class="note note-warning">本博客所有文章除特别声明外，均采用 <a href="https://zh.wikipedia.org/wiki/Wikipedia:CC_BY-SA_3.0%E5%8D%8F%E8%AE%AE%E6%96%87%E6%9C%AC" target="_blank" rel="nofollow noopener noopener">CC BY-SA 3.0协议</a> 。转载请注明出处！</p>
              
              
                <div class="post-prevnext row">
                  <div class="post-prev col-6">
                    
                    
                      <a href="/2018/07/27/2018-07-26-ml-svm-kernel/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">机器学习-支持向量机核函数</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </div>
                  <div class="post-next col-6">
                    
                    
                      <a href="/2018/07/26/2018-07-25-ml-svm/">
                        <span class="hidden-mobile">机器学习-支持向量机</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </div>
                </div>
              
            </div>

            
              <!-- Comments -->
              <div class="comments" id="comments">
                
                
  <script defer src="https://utteranc.es/client.js"
          repo="sevenold/blog_comments"
          issue-term="pathname"
  
          label="utterances"
    
          theme="github-dark"
          crossorigin="anonymous"
  >
  </script>


              </div>
            
          </div>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p>
  <div id="tocbot"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    
  </main>

  
    <a id="scroll-top-button" href="#" role="button">
      <i class="iconfont icon-arrowup" aria-hidden="true"></i>
    </a>
  

  
    <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
  

  

  

  <footer class="mt-5">
  <div class="text-center py-3">
    <div>
      <a href="https://ai-club.gitee.io" target="_blank" rel="nofollow noopener"><span>Seven</span></a>
      <i class="iconfont icon-love"></i>
      <a href="https://ai-club.gitee.io" target="_blank" rel="nofollow noopener"><span>算法</span></a>
    </div>
    
  <div>
    
      <!-- 不蒜子统计PV -->
      
      <span id="busuanzi_container_site_pv" style="display: none">
      总访问量 <span id="busuanzi_value_site_pv"></span> 次
    </span>
    
    
      <!-- 不蒜子统计UV -->
      
      <span id="busuanzi_container_site_uv" style="display: none">
      总访客数 <span id="busuanzi_value_site_uv"></span> 人
    </span>
    
  </div>


    

    
  </div>
</footer>

<!-- SCRIPTS -->
<script  src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js" ></script>
<script  src="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/js/bootstrap.min.js" ></script>
<script  src="/js/main.js" ></script>


  <script  src="/js/lazyload.js" ></script>



  
  <script  src="https://cdn.staticfile.org/tocbot/4.11.1/tocbot.min.js" ></script>
  <script>
    $(document).ready(function () {
      var boardCtn = $('#board-ctn');
      var boardTop = boardCtn.offset().top;

      tocbot.init({
        tocSelector: '#tocbot',
        contentSelector: '.post-content',
        headingSelector: 'h1,h2,h3,h4,h5,h6',
        linkClass: 'tocbot-link',
        activeLinkClass: 'tocbot-active-link',
        listClass: 'tocbot-list',
        isCollapsedClass: 'tocbot-is-collapsed',
        collapsibleClass: 'tocbot-is-collapsible',
        collapseDepth: 0,
        scrollSmooth: true,
        headingsOffset: -boardTop
      });
      if ($('.toc-list-item').length > 0) {
        $('#toc').css('visibility', 'visible');
      }
    });
  </script>





  <script defer src="https://cdn.staticfile.org/clipboard.js/2.0.6/clipboard.min.js" ></script>
  <script  src="/js/clipboard-use.js" ></script>



  <script defer src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" ></script>




<!-- Plugins -->


  
    <!-- Baidu Analytics -->
    <script defer>
      var _hmt = _hmt || [];
      (function () {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?148e1083cf73cfd11f7ffaae0cd55877";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
      })();
    </script>
  

  

  

  

  

  



  <script  src="https://cdn.staticfile.org/typed.js/2.0.11/typed.min.js" ></script>
  <script>
    var typed = new Typed('#subtitle', {
      strings: [
        '  ',
        "机器学习-支持向量机软间隔和正则化&nbsp;",
      ],
      cursorChar: "_",
      typeSpeed: 70,
      loop: false,
    });
    typed.stop();
    $(document).ready(function () {
      $(".typed-cursor").addClass("h2");
      typed.start();
    });
  </script>



  <script  src="https://cdn.staticfile.org/anchor-js/4.2.2/anchor.min.js" ></script>
  <script>
    anchors.options = {
      placement: "right",
      visible: "hover",
      
    };
    var el = "h1,h2,h3,h4,h5,h6".split(",");
    var res = [];
    for (item of el) {
      res.push(".markdown-body > " + item)
    }
    anchors.add(res.join(", "))
  </script>



  <script  src="/js/local-search.js" ></script>
  <script>
    var path = "/local-search.xml";
    var inputArea = document.querySelector("#local-search-input");
    inputArea.onclick = function () {
      searchFunc(path, 'local-search-input', 'local-search-result');
      this.onclick = null
    }
  </script>



  <script  src="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.css" />

  <script>
    $('#post img:not(.no-zoom img, img[no-zoom]), img[zoom]').each(
      function () {
        var element = document.createElement('a');
        $(element).attr('data-fancybox', 'images');
        $(element).attr('href', $(this).attr('src'));
        $(this).wrap(element);
      }
    );
  </script>





  

  
    <!-- MathJax -->
    <script>
      MathJax = {
        tex: {
          inlineMath: [['$', '$'], ['\\(', '\\)']]
        },
        options: {
          renderActions: {
            findScript: [10, doc => {
              document.querySelectorAll('script[type^="math/tex"]').forEach(node => {
                const display = !!node.type.match(/; *mode=display/);
                const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
                const text = document.createTextNode('');
                node.parentNode.replaceChild(text, node);
                math.start = { node: text, delim: '', n: 0 };
                math.end = { node: text, delim: '', n: 0 };
                doc.math.push(math);
              });
            }, '', false],
            insertedScript: [200, () => {
              document.querySelectorAll('mjx-container').forEach(node => {
                let target = node.parentNode;
                if (target.nodeName.toLowerCase() === 'li') {
                  target.parentNode.classList.add('has-jax');
                }
              });
            }, '', false]
          }
        }
      };
    </script>

    <script async src="https://cdn.staticfile.org/mathjax/3.0.5/es5/tex-svg.js" ></script>

  














</body>
</html>
